/*
* 继承: 子类继承父类的属性和方法
*   目的: 可以让子类的 实例 能够调用父类的属性和方法
*   A: 父类 Parent Super
*   B: 子类 Child
* */

// 方案二: call继承(借用构造函数继承（伪造对象、经典继承）

/*
*   CALL继承的特点:
*    CHILD方法中把PARENT当作普通函数执行, 让PARENT中的this指向CHILD的实例, 相当于给CHILD的实例设置了私有的属性和私有的方法
*
*   1. 只能继承父类私有的属性和方法(因为只是把parent当作普通函数执行,跟PARENT原型上的属性和方法没有关系)
*   2. 父类私有属性和方法变成子类私有的属性和方法
*
* */

/*function a() {
    this.x = 1;
}
a();//window*/


function A(x) {
    this.x = x;
}
A.prototype.getX = function(){
    console.log(this.x);
};

function B(y) {
    // this:B ==> B的实例b1
    // A();//A(this==>window
    A.call(this, 200); //
    this.y = y;
}
B.prototype.getY = function(){
    console.log(this.y);
};

let b1 = new B(100);
console.log(b1);
// b1.y;
b1.getY();
// b1.x;
// b1.getX();





/*function a() {
 this.x = 1;
 }
 a();//window*/


/*function A(x) {
    console.log("A====>",this);
    this.x = x;
}

function B(y) {
    console.log("B====>",this); //window
    A();//window
    this.y = y;
}
B();//window*/












